// import request_api from 'request_api.js';

// console.log(request_api);



const typeData = {
  1: 2,
  2: 2,
  3: 4,
  4: 1,
  5: 2,
  6: 2,
  7: 2,
  8: 2,
  9: 2,
  10: 2,
  11: 2,
  12: 2,
  13: 2,
  14: 2,
  15: 2,
  16: 2,
  17: 2,
  18: 1,
  19: 1,
  20: 1,
  21: 1,
  22: 1,
  23: 1,
  24: 1,
  25: 1,
  26: 1,
  27: 1,
  28: 1,
  29: 1,
  30: 1,
  31: 1,
  32: 1,
  33: 1
};

const utils = {
  /**
   * 发送消息 给单独用户
   * @param {*} TemplateID 模版ID
   * @param {*} messageType 消息类型，1 系统消息，2 订单消息 ，3开票消息，4 活动信息，5 citywalk消息，6 权益消息，7 投票 消息
   * @param {*} data 消息里的字段
   * @param {*} userInfoId 创建用户ID
   * @param {*} incept 接收人ID
   * @returns
   */
  sendMessageAlone: (TemplateID, messageType, data, userInfoId, incept,that) => {
    console.log(that,'ooooooo');
    
    return new Promise((resolve, reject) => {
      that.octopus.request.api.post(
        "/Octopus/Engine/Item",
        {
          id: 1215,
          type: "CREATE",
          cellData: [
            {
              name: "CreateTime",
              defaultValue:
                new Date().toJSON().substring(0, 10) +
                " " +
                new Date().toTimeString().substring(0, 8)
            }, // 创建时间
            { name: "CreateUserID", defaultValue: userInfoId }, // 创建人
            { name: "IsRead", defaultValue: 0 }, // 是否已读
            { name: "TemplateID", defaultValue: TemplateID }, // 模板ID
            { name: "TypeID", defaultValue: messageType }, // 消息类型
            { name: "UserContent", defaultValue: JSON.stringify(data) }, // 消息内容
            { name: "UserID", defaultValue: incept } // 接收人
          ]
        },
        // 处理回调事件，通过分析data.status.code的状态来实现。
        data => {
          if (data.status.code === 200) {
            resolve(data);
          } else {
            reject(data);
          }
        }
      );
    });
  },
  /**
   * 获取用户组信息的id
   * @param {*} name <#P:RoleName:'AIGC','Java开发工程师'>
   * @param {*} CompanyId
   * @returns 
   */
  getGroupInfo: (that,name = '超级管理员',CompanyID) => {
    let arr = name.split(',');
    return new Promise((resolve, reject) => {
      that.octopus.request.api.post(
        "/Octopus/Engine/List",
        {
          id: 1417,
          cellData: [
            { name: "ID" }, // IDS
            {name: "Name",},	// Name filterKey:'CONTAIN',filterVlaue:name
          ],
          paramData: {
            // RoleName:name,
            CompanyID:CompanyID
          }
        },
        data => {
          if (data.status.code === 200) {
            let newArr = [];
            newArr = data.content.queryData.filter(x=> arr.some(item=> item == x.Name));
            let str = newArr.map(x=>x.ID).join(',')
            resolve(str);
          } else {
            reject(data);
          }
        }
      );
    });
  },
  /**
   * 发送消息 给多个用户（某个组）
   * open地址:/ESB/AIGC/PUSH/groupPushByCompanyId/{companyId}/{roleId}
   * @param {*} TemplateID 模版ID
   * @param {*} messageType 消息类型，1 系统消息，2 订单消息 ，3开票消息，4 活动信息，5 citywalk消息，6 权益消息，7 投票 消息
   * @param {*} data 消息里的字段 ， { "templateID": "5", "typeID": "2", "createUserID": "123", "userContent": { "title": "示例标题", "body": "这是正文内容。", "dateCreated": "2023-01-01T12:00:00Z" } }
   * @param {*} companyId 公司ID
   * @param {*} roleId 群组ID ，可以根据公司下面的单角色与多角色进行推送,多角色使用,进行分割 案例: roleId:  140,141,144，业务给出,给那些角色推送,指定的消息给指定的人群进行推送,到时候让他们给出角色名就行,然后出一个数据源给你,查出来这些公司下面的角色ID
   * @param {*} userInfoId 创建用户ID
   * @returns
   */
  sendMessageMulti: (
    TemplateID,
    messageType,
    data,
    userInfoId,
    companyId,
    roleId,
    that
  ) => {
    data.dateCreated =
      new Date().toJSON().substring(0, 10) +
      " " +
      new Date().toTimeString().substring(0, 8);
      
    return new Promise((resolve, reject) => {
      that.octopus.tools.openAPI(
        `/ESB/AIGC/PUSH/groupPushByCompanyId/${companyId}/${roleId}`,
        {
          templateID: TemplateID,
          typeID: messageType,
          createUserID: userInfoId,
          userContent: data
        },
        datas => {
          if (datas.content.status.code === 200) {
            resolve(datas);
          } else {
            reject(datas);
          }
        }
      );
    });
  }
};

export { utils };
